package mlz.a_string;

import java.util.Random;

/*
需求：实现随机产生验证码，验证码的每位可能是数字、大写字母、小写字母
字符串:abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789

需求分析:
1.设计一个方法,这个方法生成随机字符串(验证码),有返回值,验证码位数由外部传入
2.定义两个字符串变量(1.用来存储最终生成的验证码,2.用来存储所需要用到的字符串)
3.定义for循环用于控制生成验证码的位数 (4,6,8)
4.每次会得到一个字符范围内的随机索引(下标)
5.根据下标获取到对应的字符,把这个字符赋值给终生成的验证码的变量进行拼接
6.循环结束后,将最终生成的验证码返回给调用者.
 */
public class StringWork02 {
    public static void main(String[] args) {
        String code1 = createCode(4);//jClx P6y0
        System.out.println(code1);

        String code2 = createCode(8);
        System.out.println(code2);//zmy37ZuQ wWknRG62
    }

    //1.设计一个方法,这个方法生成随机字符串(验证码),有返回值,验证码位数由外部传入
    public static String createCode(int n){
        //2.定义两个字符串变量(1.用来存储最终生成的验证码,2.用来存储所需要用到的字符串)
        String code = "";
        String data = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

        //定义一个随机数的对象
        Random r = new Random();

        //3.定义for循环用于控制生成验证码的位数 (4,6,8)
        for (int i = 0; i < n; i++) {
            /*
            4.每次会得到一个字符范围内的随机索引(下标)
            5.根据下标获取到对应的字符,把这个字符赋值给终生成的验证码的变量进行拼接
             */
            int index = r.nextInt(data.length());
            code += data.charAt(index);//code += a
        }
        return code;
    }

}


































